package cn.actoncode.boot.framework.common.http.api;


import cn.actoncode.boot.framework.common.exception.ServiceErrorException;
import cn.actoncode.boot.framework.common.json.ToJson;

import java.util.Map;

/**
 * 平台接口
 *
 * @author bin
 **/
public interface PlatformService {

    /**
     * 当本Service没有实现某个API的时候，可以用这个，针对所有API中的GET请求.
     *
     * @param url        请求接口地址
     * @param headers    请求头
     * @param queryParam 参数
     * @return 接口响应字符串
     * @throws ServiceErrorException 异常
     */
    String get(String url, Map<String, String> headers, String queryParam) throws ServiceErrorException;

    /**
     * 当本Service没有实现某个API的时候，可以用这个，针对所有API中的POST请求.
     *
     * @param url      请求接口地址
     * @param headers  请求头
     * @param postData 请求参数json值
     * @return 接口响应字符串
     * @throws ServiceErrorException 异常
     */
    String post(String url, Map<String, String> headers, String postData) throws ServiceErrorException;

    /**
     * 当本Service没有实现某个API的时候，可以用这个，针对所有API中的POST请求.
     *
     * @param url       请求接口地址
     * @param headers   请求头
     * @param obj       请求对象
     * @return 接口响应字符串
     * @throws ServiceErrorException 异常
     */
    String post(String url, Map<String, String> headers, Object obj) throws ServiceErrorException;

    /**
     * 当本Service没有实现某个API的时候，可以用这个，针对所有API中的POST请求.
     *
     * @param url       请求接口地址
     * @param headers   请求头
     * @param obj       请求对象，实现了ToJson接口
     * @return 接口响应字符串
     * @throws ServiceErrorException 异常
     */
    String post(String url, Map<String, String> headers, ToJson obj) throws ServiceErrorException;
}
